// 2.选择排序

// 思路：

//  选定第一个索引位置，然后和后面元素依次比较
//  如果后面的队员, 小于第一个索引位置的队员, 则交换位置
//  经过一轮的比较后, 可以确定第一个位置是最小的
//  然后使用同样的方法把剩下的元素逐个比较即可
//  可以看出选择排序，第一轮会选出最小值，第二轮会选出第二小的值，直到最后

//  大 O 表示法

//  比较次数：O(N^2)
//  交换次数：O(N)
// function selectionSort(arr) {
//   let length = arr.length;
//   for (let i = 0; i < length; i++) {
//     let minIndex = i;
//     for (let j = i + 1; j < length; j++) {
//       if (arr[minIndex] > arr[j]) {
//         minIndex = j;
//       }
//     }
//     [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
//   }
//   return arr;
// }
const selectionSort = (arr) => {
  let length = arr.length;
  if (length === 0) {
    return null;
  }
  for (let i = 0; i < length; i++) {
    for (let j = i + 1; j < length; j++) {
      if (arr[i] > arr[j]) {
        [arr[i], arr[j]] = [arr[j], arr[i]];
      }
    }
  }
  return arr;
};

const test = [765, 234, 547, 241, 62, 124, 6, 232, 3, 2];
console.log(selectionSort(test));
